package com.cssy.xxkj.logic.service;

import com.byd.acegiext.domain.User;
import com.cssy.xxkj.logic.entity.LogicAllocatInwhDO;
import com.cssy.xxkj.logic.entity.LogicAllocatInwhItemDO;
import com.cssy.xxkj.logic.entity.LogicAllocatOutwhDO;
import com.cssy.xxkj.logic.entity.LogicAllocatOutwhItemDO;
import com.cssy.xxkj.logic.entity.LogicAllocationDO;
import com.cssy.xxkj.logic.entity.LogicAllocationItemDO;
import com.cssy.xxkj.logic.entity.LogicCheckBackDO;
import com.cssy.xxkj.logic.entity.LogicCheckBackItemDO;
import com.cssy.xxkj.logic.entity.LogicMaterialBackDO;
import com.cssy.xxkj.logic.entity.LogicMaterialBackItemDO;
import com.cssy.xxkj.logic.entity.LogicOutsideBoundDO;
import com.cssy.xxkj.logic.entity.LogicOutsideBoundItemDO;
import com.cssy.xxkj.logic.entity.LogicOutsideStockDO;
import com.cssy.xxkj.logic.entity.LogicOutsideStockItemDO;
import com.cssy.xxkj.logic.entity.LogicProductionStorageinDO;
import com.cssy.xxkj.logic.entity.LogicProductionStorageinItemDO;
import com.cssy.xxkj.logic.entity.LogicProductionStorageoutDO;
import com.cssy.xxkj.logic.entity.LogicProductionStorageoutItemDO;
import com.cssy.xxkj.logic.entity.LogicPurchaseReturnDO;
import com.cssy.xxkj.logic.entity.LogicPurchaseReturnItemDO;
import com.cssy.xxkj.logic.entity.LogicPurchaseWareDO;
import com.cssy.xxkj.logic.entity.LogicPurchaseWareItemDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseBatchInDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseBatchInItemDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseMaterialoutDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseMaterialoutItemDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseOtherinDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseOtherinItemDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseOtheroutDO;
import com.cssy.xxkj.logic.entity.LogicWarehouseOtheroutItemDO;
import com.cssy.xxkj.logic.entity.LogicWhCheckTaskDO;
import com.cssy.xxkj.logic.entity.LogicWhCheckTaskItemDO;
import com.plat.exception.SyBaseException;
import com.plat.helper.SearchConditions;

/**
 * 修改仓库库存公用类
 * @author zeyong.gui
 *
 */
public interface ILogicHsUtilService {
	
	//修改采购入库的物料仓库库存
	public void processHsPurchaseWareItem(LogicPurchaseWareDO mainEntity, LogicPurchaseWareItemDO itemEntity, User user)throws SyBaseException;
	
	//修改采购退货的物料仓库库存
	public void processHsPurhcaseReturnItem(LogicPurchaseReturnDO mainEntity, LogicPurchaseReturnItemDO itemEntity, User user)throws SyBaseException;

	//修改调拨发起的物料仓库库存
	public void processHsAllocatOutwhItem(LogicAllocatOutwhDO mainEntity, LogicAllocatOutwhItemDO itemEntity, User user)throws SyBaseException;
	
	//修改调拨接收的物料仓库库存
	public void processHsAllocatInwhItem(LogicAllocatInwhDO mainEntity, LogicAllocatInwhItemDO itemEntity, User user)throws SyBaseException;
	
	//修改委外入库的物料仓库库存
	public void processHsOutSideInItem(LogicOutsideStockDO mainEntity, LogicOutsideStockItemDO itemEntity, User user)throws SyBaseException;
	
	//修改委外出库的物料仓库库存
	public void processHsOutSideOutItem(LogicOutsideBoundDO mainEntity, LogicOutsideBoundItemDO itemEntity, User user)throws SyBaseException;
	
	//修改调拨的物料的仓库库存
	public void processHsAllocationItem(LogicAllocationDO mainEntity, LogicAllocationItemDO itemEntity, User user)throws SyBaseException;
	
	//修改成品入库的仓库库存
	public void processProdStorageInItem(LogicProductionStorageinDO mainEntity, LogicProductionStorageinItemDO itemEntity, User user)throws SyBaseException;
	
	//修改成品出库的仓库库存
	public void processProdStorageOutItem(LogicProductionStorageoutDO mainEntity, LogicProductionStorageoutItemDO itemEntity, User user)throws SyBaseException;
	
	//修改领料出库的仓库库存
	public void processMaterailsOutItem(LogicWarehouseMaterialoutDO mainEntity, LogicWarehouseMaterialoutItemDO itemEntity, User user)throws SyBaseException;
	
	//修改其他入库的仓库库存
	public void processHsOtherInItem(LogicWarehouseOtherinDO mainEntity, LogicWarehouseOtherinItemDO itemEntity, User user)throws SyBaseException;
	
	//多PI入库
	public void processHsBatchInItem(LogicWarehouseBatchInDO mainEntity, LogicWarehouseBatchInItemDO itemEntity, User user)throws SyBaseException;
	
	//修改其他出库的仓库库存
	public void processHsOtherOutItem(LogicWarehouseOtheroutDO mainEntity, LogicWarehouseOtheroutItemDO itemEntity, User user)throws SyBaseException;
	
	//反审其他出入库改变库存
	public void processCheckBack(LogicCheckBackDO mainEntity,LogicCheckBackItemDO itemEntity, User user)  throws SyBaseException;
	
	//盘点修改库存	
	public void processCheckTask(LogicWhCheckTaskDO mainEntity , LogicWhCheckTaskItemDO itemEntity, User user) throws SyBaseException;
	
	//处理
	public void processWareHouseTask(SearchConditions scs)throws SyBaseException;
	
	public void aginInStore()throws SyBaseException;
	
	//处理退货
	public void processHsMaterialBackItem(LogicMaterialBackDO mainEntity, LogicMaterialBackItemDO itemEntity, User user)throws SyBaseException;
}
